package com.sg.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.wicket.okrapp.common.annotations.LikeFlag;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @author xxx
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("baa19d47375c11ed87d500163e1b729d")
public class OmsTargetObjective extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 指标ID
     */
    @TableId(value = "objective_id", type = IdType.UUID)
    @NotNull(message = "objectiveId不能为空")
    private String objectiveId;

    /**
     * 指标标识
     */
    @TableField(value = "objective_code")
    @NotNull(message = "指标标识不能为空")
    @ApiModelProperty("指标标识")
    @LikeFlag(likeType = "RIGHT_LIKE")
    private String objectiveCode;

    /**
     * 指标编号
     */
    @TableField(value = "objective_number")
    @NotNull(message = "指标编号不能为空")
    @ApiModelProperty("指标编号")
    private String objectiveNumber;

    /**
     * 指标名称
     */
    @TableField(value = "objective_name")
    @ApiModelProperty("指标名称")
    private String objectiveName;

    /**
     * 指标简称
     */
    @TableField(value = "objective_short_name")
    @ApiModelProperty("指标简称")
    private String objectiveShortName;

    /**
     * 执行措施要求
     */
    @TableField(value = "implement_requirement")
    @ApiModelProperty("执行措施要求")
    private String implementRequirement;

    /**
     * 佐证材料要求
     */
    @TableField(value = "support_requirement")
    @ApiModelProperty("佐证材料要求")
    private String supportRequirement;

    /**
     * 备注
     */
    @TableField(value = "remark")
    @ApiModelProperty("备注")
    private String remark;

    /**
     * 层级
     */
    @TableField(value = "level_number")
    @NotNull(message = "层级不能为空")
    @ApiModelProperty("层级")
    private Long levelNumber;

    /**
     * 目标类型 PERSON_LIABLE:团队目标 INITIATOR:个人目标 PARTICIPANTS:111111协同目标
     */
    @TableField(value = "target_type")
    @NotNull(message = "目标类型不能为空")
    @ApiModelProperty("目标类型")
    private String targetType;

    /**
     * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
     */
    @TableField(value = "periodic_mode_type_code")
    @NotNull(message = "周期模式类型编码不能为空")
    @ApiModelProperty("周期模式类型编码")
    private String periodicModeTypeCode;

    /**
     * 归属父级指标ID
     */
    @TableField(value = "parent_objective_id")
    @ApiModelProperty("归属父级指标ID")
    private String parentObjectiveId;

    /**
     * 冗余一级指标ID
     */
    @TableField(value = "root_objective_id")
    @ApiModelProperty("冗余一级指标ID")
    private String rootObjectiveId;

    /**
     * 是否末级指标 TRUE:是 FALSE:否
     */
    @TableField(value = "is_last_objective")
    @NotNull(message = "是否末级指标不能为空")
    @ApiModelProperty("是否末级指标")
    private String isLastObjective;

    /**
     * 归属父级目标分类ID
     */
    @TableField(value = "parent_target_category_id")
    @ApiModelProperty("归属父级目标分类ID")
    private String parentTargetCategoryId;

    /**
     * 关联末级目标分类ID
     */
    @TableField(value = "correlation_last_target_cat_id")
    @NotNull(message = "关联末级目标分类ID不能为空")
    @ApiModelProperty("关联末级目标分类ID")
    private String correlationLastTargetCatId;

    /**
     * 冗余一级目标分类ID
     */
    @TableField(value = "root_target_category_id")
    @NotNull(message = "冗余一级目标分类ID不能为空")
    @ApiModelProperty("冗余一级目标分类ID")
    private String rootTargetCategoryId;

    /**
     * 冗余目标ID
     */
    @TableField(value = "target_id")
    @NotNull(message = "冗余目标ID不能为空")
    @ApiModelProperty("冗余目标ID")
    private String targetId;

    /**
     * 冗余指标模板ID
     */
    @TableField(value = "objective_template_id")
    @NotNull(message = "冗余指标模板ID不能为空")
    @ApiModelProperty("冗余指标模板ID")
    private String objectiveTemplateId;

    /**
     * 冗余指标模板类型 QUALITATIVE:定性 RATION:定量
     */
    @TableField(value = "objective_type")
    @NotNull(message = "冗余指标模板类型不能为空")
    @ApiModelProperty("冗余指标模板类型")
    private String objectiveType;

    /**
     * 冗余是否有目标值 TRUE:是 FALSE:否
     */
    @TableField(value = "is_use_target_value")
    @ApiModelProperty("冗余是否有目标值")
    private String isUseTargetValue;

    /**
     * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
     */
    @TableField(value = "target_value_type")
    @NotNull(message = "冗余指标业务类型不能为空")
    @ApiModelProperty("冗余指标业务类型")
    private String targetValueType;

    /**
     * 冗余是否左侧比例型 TRUE:是 FALSE:否
     */
    @TableField(value = "is_left")
    @ApiModelProperty("冗余是否左侧比例型")
    private String isLeft;

    /**
     * 冗余单位
     */
    @TableField(value = "unit")
    @ApiModelProperty("冗余单位")
    private String unit;

    /**
     * 冗余数字单位
     */
    @TableField(value = "digital_unit")
    @ApiModelProperty("冗余数字单位")
    private Double digitalUnit;

    /**
     * 计算数据来源 MANUAL_FILLING:人工填报 SYSTEM_DOCKING:系统对接
     */
    @TableField(value = "calculate_data_source")
    @NotNull(message = "计算数据来源不能为空")
    @ApiModelProperty("计算数据来源")
    private String calculateDataSource;

    /**
     * 系统对接计算点 CALCULATE:计算实际值 SCORE_AFTER_CALCULATE:计算实际值得分
     */
    @TableField(value = "system_docking")
    @ApiModelProperty("系统对接计算点")
    private String systemDocking;

    /**
     * 是否引用指标 TRUE:是 FALSE:否
     */
    @TableField(value = "is_reference")
    @NotNull(message = "是否引用指标不能为空")
    @ApiModelProperty("是否引用指标")
    private String isReference;

    /**
     * 是否被引用 TRUE:是 FALSE:否
     */
    @TableField(value = "is_be_referenced")
    @NotNull(message = "是否被引用不能为空")
    @ApiModelProperty("是否被引用")
    private String isBeReferenced;

    /**
     * 是否已引用 TRUE:是 FALSE:否
     */
    @TableField(value = "is_already_referenced")
    @NotNull(message = "是否已引用不能为空")
    @ApiModelProperty("是否已引用")
    private String isAlreadyReferenced;

    /**
     * 是否共享指标 TRUE:是 FALSE:否
     */
    @TableField(value = "is_share")
    @NotNull(message = "是否共享指标不能为空")
    @ApiModelProperty("是否共享指标")
    private String isShare;

    /**
     * 指标引用方式 SIMPLE_REFERENCE:一键引用 SENIOR_REFERENCE:高级引用
     */
    @TableField(value = "reference_way")
    @ApiModelProperty("指标引用方式")
    private String referenceWay;

    /**
     * 是否开启主观评分 TRUE:是 FALSE:否
     */
    @TableField(value = "is_subjective_scoring")
    @NotNull(message = "是否开启主观评分不能为空")
    @ApiModelProperty("是否开启主观评分")
    private String isSubjectiveScoring;

    /**
     * 是否已下发指标达成度数据 TRUE:是 FALSE:否
     */
    @TableField(value = "is_accept_objective_reach_data")
    @ApiModelProperty("是否已下发指标达成度数据")
    private String isAcceptObjectiveReachData;

    /**
     * 是否开启量化客观评分 TRUE:是 FALSE:否
     */
    @TableField(value = "is_objective_quantization")
    @NotNull(message = "是否开启量化客观评分不能为空")
    @ApiModelProperty("是否开启量化客观评分")
    private String isObjectiveQuantization;

    /**
     * 批次标识
     */
    @TableField(value = "batch_code")
    @ApiModelProperty("批次标识")
    private String batchCode;

    /**
     * 创建于批次标识
     */
    @TableField(value = "create_batch_code")
    @ApiModelProperty("创建于批次标识")
    private String createBatchCode;

    /**
     * 排序
     */
    @TableField(value = "order_number")
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 批次开始时间
     */
    @TableField(value = "batch_start_time")
    @ApiModelProperty("批次开始时间")
    private Date batchStartTime;

    /**
     * 部门排序
     */
    @TableField(value = "duty_body_order_num")
    @ApiModelProperty("部门排序")
    private Long dutyBodyOrderNum;

    /**
     * 批次结束时间
     */
    @TableField(value = "batch_endt_time")
    @NotNull(message = "批次结束时间不能为空")
    @ApiModelProperty("批次结束时间")
    private Date batchEndtTime;

    /**
     * 个人排序
     */
    @TableField(value = "personal_order_number")
    @ApiModelProperty("个人排序")
    private Long personalOrderNumber;

    /**
     * 批次下是否更新 TRUE:是 FALSE:否
     */
    @TableField(value = "is_update")
    @NotNull(message = "批次下是否更新不能为空")
    @ApiModelProperty("批次下是否更新")
    private String isUpdate;

    /**
     * 权重排序
     */
    @TableField(value = "weight_order_number")
    @ApiModelProperty("权重排序")
    private Long weightOrderNumber;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @TableField(value = "subject_life_cycle")
    @NotNull(message = "主体生命周期不能为空")
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @TableField(value = "update_status")
    @NotNull(message = "批次下更新状态不能为空")
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;

    /**
     * 冗余评价模板ID
     */
    @TableField(value = "evaluation_template_id")
    @NotNull(message = "冗余评价模板ID不能为空")
    @ApiModelProperty("冗余评价模板ID")
    private String evaluationTemplateId;

    /**
     * 是否存档 TRUE:是 FALSE:否
     */
    @TableField(value = "is_archive")
    @NotNull(message = "是否存档不能为空")
    @ApiModelProperty("是否存档")
    private String isArchive;

    /**
     * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
     */
    @TableField(value = "archivng_type")
    @NotNull(message = "存档类型不能为空")
    @ApiModelProperty("存档类型")
    private String archivngType;

    /**
     * 是否未来 TRUE:是 FALSE:否
     */
    @TableField(value = "is_editing")
    @NotNull(message = "是否未来不能为空")
    @ApiModelProperty("是否未来")
    private String isEditing;

    /**
     * 操作人就职记录ID
     */
    @TableField(value = "operation_induction_id")
    @NotNull(message = "操作人就职记录ID不能为空")
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 创建人就职记录ID
     */
    @TableField(value = "create_induction_id")
    @NotNull(message = "创建人就职记录ID 不能为空")
    @ApiModelProperty("创建人就职记录ID ")
    private String createInductionId;

    /**
     * 发布人就职记录ID
     */
    @TableField(value = "release_induction_id")
    @ApiModelProperty("发布人就职记录ID")
    private String releaseInductionId;

    /**
     * 存档人就职记录ID
     */
    @TableField(value = "archive_induction_id")
    @ApiModelProperty("存档人就职记录ID")
    private String archiveInductionId;

    /**
     * 是否作废 TRUE:是 FALSE:否
     */
    @TableField(value = "is_valid")
    @NotNull(message = "是否作废不能为空")
    @ApiModelProperty("是否作废")
    private String isValid;

    /**
     * 操作时间
     */
    @TableField(value = "operate_time")
    @NotNull(message = "操作时间不能为空")
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @NotNull(message = "创建时间不能为空")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 创建于空间ID
     */
    @TableField(value = "space_id")
    @NotNull(message = "创建于空间ID不能为空")
    @ApiModelProperty("创建于空间ID")
    private String spaceId;

    /**
     * 发布时间
     */
    @TableField(value = "release_time")
    @ApiModelProperty("发布时间")
    private Date releaseTime;

    /**
     * 创建于联盟应用ID
     */
    @TableField(value = "app_id")
    @NotNull(message = "创建于联盟应用ID不能为空")
    @ApiModelProperty("创建于联盟应用ID")
    private String appId;

    /**
     * 存档时间
     */
    @TableField(value = "archive_time")
    @ApiModelProperty("存档时间")
    private Date archiveTime;
}
